package Modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JOptionPane;

public class ModVentas extends Tabla {
/**
 * @uml.property  name="codVenta"
 */
private int CodVenta;
/**
 * @uml.property  name="codProd"
 */
private int CodProd;
/**
 * @uml.property  name="cantidad"
 */
private int Cantidad;
/**
 * @uml.property  name="monto"
 */
private float Monto;
/**
 * @uml.property  name="cliente"
 */
private String Cliente;

public ModVentas() {
	super.setNombreTabla("Venta");
}

public ModVentas(String nombreTabla) {
	super(nombreTabla);
	// TODO Auto-generated constructor stub
}
public boolean sePuedeVender()
{
	boolean se=false;
	String sql="SELECT   \"Productos\".\"CodProd\",   \"ProdxIngre\".\"Cantidad\",   \"Ingredientes\".\"Cantidad\"" +
			"FROM   public.\"Productos\",   public.\"ProdxIngre\",   public.\"Ingredientes\"" +
			"WHERE   \"Productos\".\"CodProd\" = \"ProdxIngre\".\"CodProd\" AND  \"ProdxIngre\".\"CodIngre\" = \"Ingredientes\".\"CodIngre\"";
	ProxyConexion bd = new ProxyConexion();
	bd.abrirConexion();
	
    ResultSet rs = bd.consulta(sql);    
	try {
		if (rs.next()) {
			float necesito=rs.getFloat(2)*Cantidad;
			float tengo = rs.getFloat(3);
			if (necesito>tengo)
				se=false;
			else
				se=true;
			
			
		}
		
} catch (SQLException e) {
	System.out.println(sql);
	// TODO Auto-generated catch block
	e.printStackTrace();
}
    

	return se;
}
public void rebajarCantidades()
{
	String sql="SELECT	  \"Ingredientes\".\"CodIngre\", \"Venta\".\"CodVenta\", \"Venta\".\"Cantidad\" * \"ProdxIngre\".\"Cantidad\" as resta " +
			" FROM public.\"Venta\", public.\"Productos\",public.\"ProdxIngre\", public.\"Ingredientes\"" +
     		" WHERE \"Venta\".\"CodProd\" = \"Productos\".\"CodProd\" AND \"Productos\".\"CodProd\" = \"ProdxIngre\".\"CodProd\" AND \"Ingredientes\".\"CodIngre\" = \"ProdxIngre\".\"CodIngre\"" +
     		" AND  \"Venta\".\"CodVenta\"="+CodVenta;
	Conexion bd = new Conexion();
    ResultSet rs = bd.consulta(sql);
    try {
		if (rs.next()) {
			int CodIngrediente = rs.getInt(1);
			float Cant = rs.getFloat(3);
			bd.ejecutar("update \"Ingredientes\" set  \"Cantidad\"= \"Cantidad\" - "+Cant+ " where \"CodIngre\"="+CodIngrediente);		
		
		}
		else
			System.out.println(sql);
			
	} catch (SQLException e) {
		System.out.println(sql);
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	

}


public ModVentas(int codVenta, int codProd, int cantidad, float monto,
		String cliente) {
	super();
	CodVenta = codVenta;
	CodProd = codProd;
	Cantidad = cantidad;
	Monto = monto;
	Cliente = cliente;
}

/**
 * @return
 * @uml.property  name="codVenta"
 */
public int getCodVenta() {
	return CodVenta;
}
/**
 * @param codVenta
 * @uml.property  name="codVenta"
 */
public void setCodVenta(int codVenta) {
	CodVenta = codVenta;
}
/**
 * @return
 * @uml.property  name="codProd"
 */
public int getCodProd() {
	return CodProd;
}
/**
 * @param codProd
 * @uml.property  name="codProd"
 */
public void setCodProd(int codProd) {
	CodProd = codProd;
}
/**
 * @return
 * @uml.property  name="cantidad"
 */
public int getCantidad() {
	return Cantidad;
}
/**
 * @param cantidad
 * @uml.property  name="cantidad"
 */
public void setCantidad(int cantidad) {
	Cantidad = cantidad;
}
/**
 * @return
 * @uml.property  name="monto"
 */
public float getMonto() {
	return Monto;
}
/**
 * @param monto
 * @uml.property  name="monto"
 */
public void setMonto(float monto) {
	Monto = monto;
}

/**
 * @return
 * @uml.property  name="cliente"
 */
public String getCliente() {
	return Cliente;
}

/**
 * @param cliente
 * @uml.property  name="cliente"
 */
public void setCliente(String cliente) {
	Cliente = cliente;
}

public void Cargar(String Filtro) {
    if(Filtro.equals("")) return;
    try {
        String sql = "select *from \""+super.getNombreTabla()+"\" where " + Filtro;
        //System.out.println("**********+"+sql);
        ProxyConexion bd = new ProxyConexion();
        bd.abrirConexion();
        ResultSet rs = bd.consulta(sql);
        if (rs.next()) {
            this.CodVenta = rs.getInt(1);
            this.CodProd = rs.getInt(2);
            this.Cantidad = rs.getInt(3);
            this.Monto = rs.getFloat(4);
            this.Cliente = rs.getString(5);
            setEncontro(true);
        }
        else
            setEncontro(false);

    } catch (SQLException ex) {
        Logger.getLogger(ModVentas.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void guardar() {
        ProxyConexion bd = new ProxyConexion();
        bd.abrirConexion();
        String sql;
         if(!sePuedeVender())
        {
        	JOptionPane.showMessageDialog(null, "no hay ingredientes");
        	return;
        }
        if(bd.existe(super.getNombreTabla(), "\"CodVenta\"="+CodVenta))
            sql = "update \""+super.getNombreTabla()+"\" set \"CodProd\"= "+CodProd+" ," +
                  "\"Cantidad\"= "+Cantidad+", " +
                  "\"Monto\"='"+Monto+"'," +
                  "\"Cliente\"='"+Cliente+"' " +
                  "where \"CodVenta\"="+CodVenta;
        else
            sql = "INSERT INTO \""+super.getNombreTabla()+"\" (\"CodVenta\",\"CodProd\",\"Cantidad\",\"Monto\",\"Cliente\")VALUES(" +
            	  " "+CodVenta+" ," +
            	  " "+CodProd+" ," +
            	  " "+Cantidad+" ," +
            	  " "+Monto+" ," +
            	  "'"+Cliente+"')";
        System.out.println(sql);
        bd.ejecutar(sql);
        rebajarCantidades();
    }

}
